An on-chip network, or Network on Chip (NoC) is based on packet-based communication and relies on a layered definition of the communication. NoCs generally replace buses which tend to be limited in terms of scalability, wire efficiency and performance.
Different fundamental approaches may be followed when building a network core for routing data. Networks based on reservation of connections imply arrangements which are rather complicated and are not appropriate for allocating resources within a low cost arrangement. On the other hand, in packet switched networks, the resources are not reserved. Packets use the resources on demand, and as a consequence, may have not to wait for access to communication link.
Conventional methods and apparatuses for controlling data routing use an arbitration logic. A conventional arbitration controller typically includes a plurality of inputs that receive one or more transactions from a plurality of resources. For example, a conventional arbitration controller typically arbitrates requests for access to shared resources among the plurality of blocks of functionality by implementing an arbitration policy for allowing data packets to be transferred with a requested quality of service (QoS), in particular a requested bandwidth. Accordingly, the arbitration logic is based on sorting the priority bits written in the data packets to be transferred. Accordingly, the shared resources are allocated to the packets according to the value of the priority bit.
Most conventional systems are used to transfer data on bus architectures and are not intended for allocating shared resources in a NOC. In addition, conventional communication systems, the value of the priority bit is allocated to data flow only when the priority is to be changed. Groups of packets are identified by tagging the beginning and/or the end.
In other words, all data having the same level of priority are not tagged with the information bit. Thus, problems may arise when bits of data flows previously sprayed in the network have to be gathered together. Moreover, each time more flows are concentrated, the tagging must follow composition rules not trivial to implement.
In addition, with conventional resource allocation methods, it is not possible to use any kind of arbitration method, such as WRR (“Weighted Round Robin”) or priority or other possible schemes.
There is therefore a need for a bandwidth allocator for allocating in real-time shared resources in an on-chip network of a simple architecture, and in which any kind of allocating strategies may be used.